package com.xgk.boot.module.core.dal.entity.price;


import com.baomidou.mybatisplus.annotation.*;
import com.xgk.boot.framework.common.enums.CommonStatusEnum;
import com.xgk.boot.framework.mybatis.core.dataobject.BaseDO;
import lombok.Data;

import java.math.BigDecimal;


/**
 * 价格规则表实体类
 */
@Data
@TableName("price_rule")
public class PriceRuleDO extends BaseDO {

    /**
     * 主键ID（由业务系统指定）
     */
    @TableId(value = "id",type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 规则名称（如："VIP会员9折"）
     */
    @TableField("rule_name")
    private String ruleName;

    /**
     * 规则代码，唯一标识（如："VIP_9DISCOUNT"）
     */
    @TableField("rule_code")
    private String ruleCode;

    /**
     * 规则类型（0-通用基础收费项，1-特殊杂费项）
     * * 枚举 {@link com.xgk.boot.module.core.enums.biz.PriceRuleTypeEnum}
     */
    @TableField("rule_type")
    private Integer ruleType;

    /**
     * 特殊规则代码（当rule_type=1时，关联special_rule_dictionary表的rule_code）
     */
    @TableField("fee_item_code")
    private String feeItemCode;

    /**
     * 计算规则（如："固定价"、"附加率"、"固定上浮"等）
     *
     * * 枚举 {@link com.xgk.boot.module.core.enums.biz.CalcTypeEnum}
     *
     */
    @TableField("calculation_rule")
    private String calculationRule;

    /**
     * 规则值（如：0.1表示原价1.1倍，100.00表示固定价）
     */
    @TableField("rule_value")
    private BigDecimal ruleValue;

    /**扩展规则类型
     * * 枚举 {@link com.xgk.boot.module.core.enums.biz.PriceRuleExtendTypeEnum}
     */
    @TableField("rule_extend_type")
    private Integer ruleExtendType;

    /**
     * 扩展规则配置内容 json格式string
     * Segmented_Deduction : 前含后不含规则，如没有rangeBegin时,默认为0;没有rangeEnd时,默认为无穷大
     * {[rangeBegin:xx,rangeEnd:xx,calculationRule:xx,ruleValue:xx],[rangeBegin:xx,rangeEnd:xx, calculationRule:xx,ruleValue:xx]}
     */
    @TableField("rule_extend_value")
    private String ruleExtendValue;

    /**
     * 规则描述（详细说明规则内容）
     */
    @TableField("description")
    private String description;

    /**
     * 状态（0-启用。1-关闭，）
     * 枚举 {@link CommonStatusEnum}
     */
    @TableField("r_status")
    private Integer status;

}